package com.googlecode.hmvc4gwt.example.hmvcblog.service.services.user;

import com.googlecode.hmvc4gwt.example.hmvcblog.server.repository.user.exceptions.UserSessionNotFoundException;
import com.googlecode.hmvc4gwt.example.hmvcblog.service.dto.user.UserEditDTO;
import com.googlecode.hmvc4gwt.example.hmvcblog.service.dto.user.UserLoginDTO;
import com.googlecode.hmvc4gwt.example.hmvcblog.service.dto.user.UserLogoutDTO;
import com.googlecode.hmvc4gwt.example.hmvcblog.service.dto.user.UserNewDTO;
import com.googlecode.hmvc4gwt.example.hmvcblog.service.dto.user.UserRemoveDTO;
import com.googlecode.hmvc4gwt.example.hmvcblog.service.dto.user.UserSessionId;
import com.googlecode.hmvc4gwt.example.hmvcblog.service.dto.user.exception.EMailInvalidException;
import com.googlecode.hmvc4gwt.example.hmvcblog.service.dto.user.exception.LoginEmptyException;
import com.googlecode.hmvc4gwt.example.hmvcblog.service.dto.user.exception.LoginExistException;
import com.googlecode.hmvc4gwt.example.hmvcblog.service.dto.user.exception.LoginNotFoundException;
import com.googlecode.hmvc4gwt.example.hmvcblog.service.dto.user.exception.PasswordEmptyException;
import com.googlecode.hmvc4gwt.example.hmvcblog.service.dto.user.exception.PasswordWrongException;

public interface IUserService {

	public Long login(UserLoginDTO userLoginDTO) throws LoginEmptyException,
			PasswordEmptyException, LoginNotFoundException,
			PasswordWrongException;

	public boolean logout(UserLogoutDTO logoutDTO);

	public Long addUser(UserNewDTO userNewDTO) throws LoginExistException,
			PasswordEmptyException, LoginEmptyException, EMailInvalidException;

	public boolean removeUser(UserRemoveDTO userRemoveDTO);
	
	public UserEditDTO getUserEditDTO(UserSessionId sessionId) throws UserSessionNotFoundException;
	
	public void updateUserData(UserEditDTO userEditDTO) throws PasswordEmptyException, EMailInvalidException, UserSessionNotFoundException;

}
